package edu.cuit.avatar.dao;

import edu.cuit.avatar.entity.Department;

import java.util.List;

/**
 * @author <a href="mailto:1020zhaodan@163.com">Adan</a>
 * @version 1.0
 * @date 2025/7/25 15:27
 */
public interface DepartmentDao {
    /**
     * 保存部门信息
     * @param dept 部门信息
     * @return 保存成功，返回该部门的标识id(主键)
     */
    Integer save(Department dept);

    /**
     * 根据部门id删除部门信息
     * @param id 部门id
     * @return 影响行数
     */
    int removeById(Integer id);

    /**
     * 根据id修改部门信息
     * @param dept 部门(学院)信息
     * @return 影响行数
     */
    int updateById(Department dept);

    /**
     * 根据部门id加载部门信息
     * @param id 部门id
     * @return {@link Department}
     */
    Department findById(Integer id);

    /**
     * 分页加载部门信息
     * @param offset 起始偏移量,基于0的
     * @param size 加载的数据量
     * @return 部门信息列表
     */
    List<Department> limit(int offset, int size);

    /**
     * 部门总数
     * @return 部门总数
     */
    long count();

    /**
     * 满足条件的部门总数
     * @param deptName 部门名称(模糊查询)
     * @return 满足条件的部门总数
     */
    long count(String deptName);

    /**
     * 根据部门名称进行模糊查询的分页加载
     * @param offset 起始偏移量,基于0的
     * @param size 加载的数据量
     * @param deptName 部门名称
     * @return 满足条件的部门信息列表
     */
    List<Department> limit(int offset, int size, String deptName);
}
